From: Keir Fraser Date: Mon, 14 Jul 2008 09:09:25 +0000 (+0100) Subject: xend: A small cleanup to the find_sysfs_mnt() of pci.py X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14188^2~32 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=6769cc1b63e94fd99724ec44d244b7594dc8178b;p=xen.git xend: A small cleanup to the find_sysfs_mnt() of pci.py Signed-off-by: Dexuan Cui --- diff --git a/tools/python/xen/util/pci.py b/tools/python/xen/util/pci.py index 209d017cf8..9b6e6fe521 100644 --- a/tools/python/xen/util/pci.py +++ b/tools/python/xen/util/pci.py @@ -40,6 +40,9 @@ MSIX_SIZE_MASK = 0x7ff # Global variable to store information from lspci lspci_info = None +# Global variable to store the sysfs mount point +sysfs_mnt_point = None + #Calculate PAGE_SHIFT: number of bits to shift an address to get the page number PAGE_SIZE = resource.getpagesize() PAGE_SHIFT = 0 @@ -63,27 +66,28 @@ def parse_hex(val): return None def find_sysfs_mnt(): - mounts_file = open(PROC_MNT_PATH,'r') - - for line in mounts_file: - sline = line.split() - if len(sline)<3: - continue - - if sline[2]=='sysfs': - return sline[1] - - return None + global sysfs_mnt_point + if not sysfs_mnt_point is None: + return sysfs_mnt_point -def get_all_pci_names(): try: - sysfs_mnt = find_sysfs_mnt() + mounts_file = open(PROC_MNT_PATH,'r') + + for line in mounts_file: + sline = line.split() + if len(sline)<3: + continue + if sline[2]=='sysfs': + sysfs_mnt_point= sline[1] + return sysfs_mnt_point except IOError, (errno, strerr): - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % + raise PciDeviceParseError(('Failed to locate sysfs mount: %s: %s (%d)'% (PROC_PCI_PATH, strerr, errno))) + return None +def get_all_pci_names(): + sysfs_mnt = find_sysfs_mnt() pci_names = os.popen('ls ' + sysfs_mnt + SYSFS_PCI_DEVS_PATH).read().split() - return pci_names def get_all_pci_devices(): @@ -175,12 +179,7 @@ class PciDevice: self.get_info_from_lspci() def find_capability(self, type): - try: - sysfs_mnt = find_sysfs_mnt() - except IOError, (errno, strerr): - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % - (PROC_PCI_PATH, strerr, errno))) - + sysfs_mnt = find_sysfs_mnt() if sysfs_mnt == None: return False path = sysfs_mnt+SYSFS_PCI_DEVS_PATH+'/'+ \ @@ -218,7 +217,7 @@ class PciDevice: self.pba_offset = self.pba_offset & ~MSIX_BIR_MASK break except IOError, (errno, strerr): - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % + raise PciDeviceParseError(('Failed to locate sysfs mount: %s: %s (%d)' % (PROC_PCI_PATH, strerr, errno))) def remove_msix_iomem(self, index, start, size): @@ -237,12 +236,7 @@ class PciDevice: def get_info_from_sysfs(self): self.find_capability(0x11) - try: - sysfs_mnt = find_sysfs_mnt() - except IOError, (errno, strerr): - raise PciDeviceParseError(('Failed to locate sysfs mount: %s (%d)' % - (PROC_PCI_PATH, strerr, errno))) - + sysfs_mnt = find_sysfs_mnt() if sysfs_mnt == None: return False